﻿//#define _CRT_SECURE_NO_WARNINGS  1
////一定要动手，例子不管多么简单，建议至少自己手敲一遍看看是否理解了里头的细枝末节。
////一定要学会思考，思考为什么要这样，而不是那样。还要举一反三地思考
//#include<iostream>
//#include<string>
//using namespace std;
//class building;
//class goodfriend {
//private:
//	building* _build;
//public:
//	goodfriend();
//	void access();
//	void visit1();
//	void visit2();
//};
//class building {
//	friend class goodfriend;//告诉编译器，goodfriend类1是本类的好朋友，可以访问本类中的私有成员
//	friend void visit(building* build);// friend 修饰全局函数
//	friend void goodfriend:: visit1();//成员函数做友元可以访问本类中的私有成员
//private:
//	string _bedroom;
//public:
//	string _Sitingroom;
//	building();
//};
////类外实现成员函数
//building::building()
//{
//	this->_bedroom = "卧室";
//	this->_Sitingroom = "客厅";
//}
//goodfriend::goodfriend()
//{
//	_build = new building;
//}
//void goodfriend::access()
//{
//	cout << "类做有元" << endl;
//	cout << "好朋友正在访问：" << this->_build->_Sitingroom << endl;
//	cout << "好朋友正在访问：" << this->_build->_bedroom<< endl;
//}
//void goodfriend::visit1()
//{
//	cout << "成员函数友元" << endl;
//	cout << "好朋友正在访问：" << this->_build->_Sitingroom << endl;
//	cout << "好朋友正在访问：" << this->_build->_bedroom << endl;
//}
//void goodfriend::visit2()
//{
//	cout << "好朋友正在访问：" << this->_build->_Sitingroom << endl;
//	//cout << "好朋友正在访问：" << this->_build->_bedroom << endl;
//}
//
////全局函数
//void visit(building* build)
//{
//	cout << "全局函数做有元" << endl;
//	cout << "好朋友正在访问：" << build->_Sitingroom << endl;
//	cout << "好朋友正在访问：" << build->_bedroom << endl;
//
//}
//void test01()
//{
//	//全局函数做友元
//	building p1;
//	visit(&p1);
//	//类做友元
//	goodfriend p2;
//	p2.access();
//	//成员函数做有元
//	goodfriend p3;
//	p3.visit1();
//	p3.visit2();
//}
//int main()
//{
//	test01();
//	system("pause");
//	return 0;
//}